import lista.TElemento;
import lista.IElemento;
import lista.ILista;
import lista.TLista;


public class TCamino extends TLista{
	
	public TVertice origen;
	public ILista adyacencias;
	
	public String mostrarCamino(){
		return imprimirEtiquetas();
	}
	
	public void agregarAdyacencia (TAdyacencia ady){
		TElemento elementoAdy = new TElemento (ady.destino.etiqueta, ady);
		adyacencias.insertarAlFinal(elementoAdy);
	}
	
	public int obtenerCostoTotal(){
		int costoTotal = 0;
		if (!adyacencias.esVacia()){
			IElemento elementoActual = adyacencias.obtenerPrimero();
			while (elementoActual != null){
				TAdyacencia adyacenciaActual = (TAdyacencia) elementoActual.getDatos();
				int costoAdyacenciaActual = Integer.parseInt(adyacenciaActual.costo.toString());
				costoTotal = costoTotal + costoAdyacenciaActual;
				elementoActual = ((TAdyacencia) elementoActual.getDatos()).destino.adyacentes.primero;
			}
		}
		return costoTotal;
	}
	
	public TCamino(TVertice origen, ILista adyacencias) {
		super();
		this.origen = origen;
		this.adyacencias = adyacencias;
	}

	public TCamino copiaCamino(){
		TCamino caminoCopia = new TCamino(origen,new TLista());
		IElemento elementoAdyacente = adyacencias.obtenerPrimero();
		while (elementoAdyacente != null){
			IElemento aInsertar = new TElemento(elementoAdyacente.getEtiqueta(), elementoAdyacente.getDatos());
			caminoCopia.adyacencias.insertarAlFinal(aInsertar);
			elementoAdyacente = elementoAdyacente.getSiguiente();
		}
		return caminoCopia;
	}

}
